</div>
<!-- end div class="chapter" -->

<footer class="site-layout__footer site-footer" itemscope="itemscope" itemtype="https://schema.org/WPFooter">
    <nav class="site-footer__navigation" itemtype="https://schema.org/SiteNavigationElement">
        <section class="site-footer__links">
            <div class="site-footer__link-group">
                <header><strong>Docs</strong></header>
                <ul class="site-footer__links-list">
                    <li itemprop="name"><a href="/release-notes.html" itemprop="url">Release Notes</a></li>
                    <li itemprop="name"><a href="/dsl/" itemprop="url">Groovy DSL</a></li>
                    <li itemprop="name"><a href="/kotlin-dsl/" itemprop="url">Kotlin DSL</a></li>
                    <li itemprop="name"><a href="/javadoc/" itemprop="url">Javadoc</a></li>
                </ul>
            </div>
            <div class="site-footer__link-group">
                <header><strong>News</strong></header>
                <ul class="site-footer__links-list">
                    <li itemprop="name"><a href="https://blog.gradle.org/" itemprop="url">Blog</a></li>
                    <li itemprop="name"><a href="https://newsletter.gradle.org/" itemprop="url">Newsletter</a></li>
                    <li itemprop="name"><a href="https://twitter.com/gradle" itemprop="url">Twitter</a></li>
                    <li itemprop="name"><a href="https://status.gradle.com/" itemprop="url">Status</a></li>
                </ul>
            </div>
            <div class="site-footer__link-group">
                <header><strong>Products</strong></header>
                <ul class="site-footer__links-list">
                    <li itemprop="name"><a href="https://gradle.com/develocity/" itemprop="url">Develocity</a></li>
                    <li itemprop="name"><a href="https://gradle.com/develocity/product/build-scan/" itemprop="url">Build Scan®</a></li>
                    <li itemprop="name"><a href="https://gradle.com/build-cache/" itemprop="url">Build Cache</a></li>
                    <li itemprop="name"><a href="https://gradle.org/services/" itemprop="url">Services</a></li>
                </ul>
            </div>
            <div class="site-footer__link-group">
                <header><strong>Get Help</strong></header>
                <ul class="site-footer__links-list">
                    <li itemprop="name"><a href="https://discuss.gradle.org/c/help-discuss" itemprop="url">Forums</a></li>
                    <li itemprop="name"><a href="https://github.com/gradle/" itemprop="url">GitHub</a></li>
                    <li itemprop="name"><a href="https://gradle.org/training/" itemprop="url">Events</a></li>
                    <li itemprop="name"><a href="https://dpeuniversity.gradle.com/" itemprop="url">DPE University</a></li>
                </ul>
            </div>
        </section>
        <section class="site-footer__subscribe-newsletter" id="newsletter-form-container">
            <header class="newsletter-form__header"><h5>Stay <code>UP-TO-DATE</code> on new features and news:</h5></header>
            <p class="disclaimer">By entering your email, you agree to our <a href="https://gradle.com/legal/terms-of-service/">Terms</a> and <a href="https://gradle.com/legal/privacy/">Privacy Policy</a>.</p>
            <div class="newsletter-form__container">
                <form id="newsletter-form" class="newsletter-form" action="https://go.gradle.com/l/68052/2018-09-07/bk6wml" method="post">
                    <input id="email" class="email" name="email" type="email" placeholder="name@email.com" pattern="[^@\s]+@[^@\s]+\.[^@\s]+" maxlength="255" required=""/>
                    <button id="submit" class="submit" type="submit">Subscribe</button>
                </form>
            </div>
        </section>
    </nav>
</footer>

</div>
<!-- end div class="content" -->


</main>

<div class="site-footer-secondary">
    <div class="site-footer-secondary__contents">
        <div class="site-footer__copy">
            © 2025 Gradle, Inc. Gradle®, Develocity®, Build Scan®, and the Gradlephant logo are registered trademarks of Gradle, Inc.
        </div>
        <div class="site-footer__logo"><a href="https://gradle.com">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 66.06">
                <title>Gradle</title>
                <path class="cls-1"
                      d="M85.11,4.18a14.27,14.27,0,0,0-19.83-.34,1.38,1.38,0,0,0,0,2L67,7.6a1.36,1.36,0,0,0,1.78.12A8.18,8.18,0,0,1,79.5,20.06C68.17,31.38,53.05-.36,18.73,16a4.65,4.65,0,0,0-2,6.54l5.89,10.17a4.64,4.64,0,0,0,6.3,1.73l.14-.08-.11.08L31.53,33a60.29,60.29,0,0,0,8.22-6.13,1.44,1.44,0,0,1,1.87-.06h0a1.34,1.34,0,0,1,.06,2A61.61,61.61,0,0,1,33,35.34l-.09,0-2.61,1.46a7.34,7.34,0,0,1-3.61.94,7.45,7.45,0,0,1-6.47-3.71l-5.57-9.61C4,32-2.54,46.56,1,65a1.36,1.36,0,0,0,1.33,1.11H8.61A1.36,1.36,0,0,0,10,64.87a9.29,9.29,0,0,1,18.42,0,1.35,1.35,0,0,0,1.34,1.19H35.9a1.36,1.36,0,0,0,1.34-1.19,9.29,9.29,0,0,1,18.42,0A1.36,1.36,0,0,0,57,66.06H63.1a1.36,1.36,0,0,0,1.36-1.34c.14-8.6,2.46-18.48,9.07-23.43C96.43,24.16,90.41,9.48,85.11,4.18ZM61.76,30.05l-4.37-2.19h0a2.74,2.74,0,1,1,4.37,2.2Z"/>
            </svg>
        </a></div>
        <div class="site-footer-secondary__links">
            <a href="https://gradle.com/legal/privacy/">Privacy</a> |
            <a href="https://gradle.com/legal/terms-of-service/">Terms of Service</a>
        </div>
    </div>
</div>

</div>
<!-- end div class="layout" -->

<script type="text/javascript">
    // Polyfill Element.matches()
    if (!Element.prototype.matches) {
        Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
    }
    // Polyfill Element.closest()
    if (!Element.prototype.closest) {
        Element.prototype.closest = function (s) {
            var el = this;
            if (!document.documentElement.contains(el)) return null;
            do {
                if (typeof el.matches === "function" && el.matches(s)) return el;
                el = el.parentElement || el.parentNode;
            } while (el !== null);
            return null;
        };
    }

    function getCurrentChapterFileName(givenUrl) {
        var currentChapterFileName = givenUrl.substr(givenUrl.lastIndexOf("/") + 1);
        if (currentChapterFileName === "index.html" || currentChapterFileName === "") {
            currentChapterFileName = givenUrl.substr(0, givenUrl.lastIndexOf("/"));
            currentChapterFileName = currentChapterFileName.substr(currentChapterFileName.lastIndexOf("/") + 1) + "/index.html";
        }
        return currentChapterFileName;
    }

    // The media query indicating that a device is a desktop.
    // The `min-width: 64rem` definition should be aligned to
    // the one of `css/manual.css`.
    const desktopMediaQuery = window.matchMedia("screen and (min-width: 64rem)");

    [].forEach.call(document.querySelectorAll(".docs-navigation a[href$='/" + getCurrentChapterFileName(window.location.pathname) + "']"), function (link) {
        // Add "active" to all links same as current URL
        link.classList.add("active");

        // Expand all parent navigation
        var parentListEl = link.closest("li");
        while (parentListEl !== null) {
            var dropDownEl = parentListEl.querySelector(".nav-dropdown");
            if (dropDownEl !== null) {
                dropDownEl.classList.add("expanded");
            }
            parentListEl = parentListEl.parentNode.closest("li");
        }

        // Only scroll if the device is a desktop.
        //
        // Mobile's `docs-navigation` is always at bottom of `content`,
        // so we should not slide down to where `docs-navigation` lays.
        if (desktopMediaQuery.matches) {
            // Scroll to center of the page
            link.scrollIntoView({behavior: 'auto', block: 'center', inline: 'center'})
        }
    });

    // Expand/contract multi-level side navigation
    [].forEach.call(document.querySelectorAll(".docs-navigation .nav-dropdown"), function registerSideNavActions(collapsibleElement) {
        collapsibleElement.addEventListener("click", function toggleExpandedSideNav(evt) {
            evt.preventDefault();
            evt.target.classList.toggle("expanded");
            evt.target.setAttribute("aria-expanded", evt.target.classList.contains("expanded").toString());
            return false;
        }, false);
    });

    // Fix a weird issue making the initial screen always at the bottom.
    document.querySelector(".content").scrollIntoView(true);
</script>
